#!/bin/bash



declare -A  shells



while read line

do
# -F选项表示以什么字符作为分隔
   type=$(echo $line | awk -F: '{print $7}')a

   # 使用let计算器程序对输出的shell登录的类型进行一个统计 ++对值进行一个递增的
   let  shells[$type]++


done  </etc/passwd



for count in ${!shells[*]}
do


    echo "索引是$count，值是${shells[$count]}"

done

#-----------------



# read是一个用来读取用户标准输入的一个指令，来定义变量的，-p选项用来提示用户要输什么
# 通过输入重定向的方式把文件的内容输给line这个变量 输给while的同时，while在运行的时候 首先执行的第一个动作是对read  line进行条件测试‘
# read 能够接收这些标准输入，并赋值给一个叫line的变量当中
while read line



do

   # ++i默认是从1开始，作为第一个值，然后依次往后类推
   # i++默认是0开始，索引就是序号，序号从012345678排列
   echo $line
   hosts[++i]=$line

done < hosts


# 数组和变量做好以后 它是不会直接自动显示在系统上的 是一定要通过一些命令输出出来的

# 一次性吧整个数组的所有内容给输出出来

echo -n "输出数组的值: "
echo ${hosts[*]}


echo -n "输出数组的索引: "
echo ${!hosts[*]}

echo

# 可以使用for循环工具来循环遍历展示数组也就是把数组里面的每一个词给打开 可以使用for循环很好的根据数组的索引来控制次数
# 循环遍历数组的时候就能得出结论


for i in ${!hosts[*]}
do
# 在输出的时候先输出数组的索引，再输出数组的值
   echo "数组hosts的索引是：$i ,值是${hosts[$i]}"

done